﻿using System;
using System.Collections;
using System.Configuration;
using System.Web;

namespace ITC.Business.WebHelpers
{
    public static class WebUser 
    {
        public static bool IsInRole(string role)
        {
            if (HttpContext.Current == null || HttpContext.Current.User == null) { return false; }
            if (role == null) { return false; }
            if (role.Contains("All Users")) { return true; }
            if (!HttpContext.Current.Request.IsAuthenticated) { return false; }
            //if (HttpContext.Current.User.IsInRole("Admins")) { return true; }
            if (String.IsNullOrEmpty(role)) { return false; }
            
            return HttpContext.Current.User.IsInRole(role);
        }


        public static bool IsInRoles(string roles)
        {
            //if (IsInRole("Admins")) return true;
            if (String.IsNullOrEmpty(roles)) return false;
            if (roles.Contains("All Users;")) return true;
            if (!HttpContext.Current.Request.IsAuthenticated) return false;

            foreach (string role in roles.Split(new char[] { ';' }))
            {
                if (role.IndexOf("All Users") > -1) return true;
                if (IsInRole(role)) return true;
            }
            return false;
        }


        public static bool IsInRoles(IList roles)
        {
            //if (IsInRole("Admins")) return true;

            if (roles == null) return false;

            if (roles.Contains("All Users")) return true;

            if (!HttpContext.Current.Request.IsAuthenticated) return false;

            
            foreach (string role in roles)
            {
                if (role.Contains("All Users")) return true;
                if (IsInRole(role)) return true;
            }
            return false;
        }


        public static bool IsAdmin
        {
            get 
            {

                if (!HttpContext.Current.Request.IsAuthenticated) return false;
                return IsInRole("Admins"); 
            }
        }

        public static bool IsRoleAdmin
        {
            get 
            {
                if (!HttpContext.Current.Request.IsAuthenticated) return false;
                return IsInRole("Role Admins"); 
            }
        }

        /// <summary>
        /// Ban Giám Hiệu
        /// </summary>
        public static bool IsBanGiamHieu
        {
            get
            {

                if (!HttpContext.Current.Request.IsAuthenticated) return false;
                return IsInRole("BanGiamHieu");
            }
        }

        /// <summary>
        /// Nhân viên Phòng Đào tạo
        /// </summary>
        //public static bool IsPhongDaoTao
        //{
        //    get
        //    {

        //        if (!HttpContext.Current.Request.IsAuthenticated) return false;
        //        return IsInRole("DaoTao");
        //    }
        //}

        /// <summary>
        /// Nhân viên Phòng Kế Hoạch - Tài Chính
        /// </summary>
        public static bool IsLanhDaoPhong
        {
            get
            {

                if (!HttpContext.Current.Request.IsAuthenticated) return false;
                return IsInRole("LanhDaoPhong");
            }
        }

        /// <summary>
        /// Thư Ký Khoa/TT/Viện - có chức năng đào tạo
        /// </summary>
        //public static bool IsThuKyKhoa
        //{
        //    get
        //    {

        //        if (!HttpContext.Current.Request.IsAuthenticated) return false;
        //        return IsInRole("ThuKyKhoa");
        //    }
        //}

        /// <summary>
        /// Lãnh đạo Khoa/TT/Viện - có chức năng đào tạo
        /// </summary>
        public static bool IsLanhDaoKhoa
        {
            get
            {

                if (!HttpContext.Current.Request.IsAuthenticated) return false;
                return IsInRole("LanhDaoKhoa");
            }
        }

        /// <summary>
        /// Giảng viên
        /// </summary>
        public static bool IsGiangVien
        {
            get
            {

                if (!HttpContext.Current.Request.IsAuthenticated) return false;
                return IsInRole("GiangVien");
            }
        }

        //kiểm tra có phải là admin hay là có quyền admin
        public static bool IsAdminOrRoleAdmin
        {
            get
            {
                return IsAdmin || IsRoleAdmin;
            }
        }

       
    }
}
